software thread yarn string theory knit cosmology embroidery software engineer physics sewing development knitting java fabric software development software engineer in canada scott wang c++ general relativity crochet programmer